Computers run a variety of applications. Each application may provide a feature or set of features. Several applications installed on a computer may provide similar features. It may be desirable to allow a plurality of applications to exchange messages so that a first application may use a feature available in a second application. Special programming interfaces and or code manipulation may be used to allow the first application to access the feature of the second application. For example, the second application may contain an application programming interface that may provide a framework for the developer of the first application to use to configure interaction and shared feature usage between the first application and the second application.